; boot扇区被加载到内存0x7c00处
; 告诉汇编器代码会被放到0x7c00处，从而保证代码中的标签的地址被正确编译，即加上0x7c00
[org 0x7c00]

cli
; 将段寄存器置0 防止随机值导致程序异常
xor ax, ax
mov ds, ax
mov es, ax
mov ss, ax
; 栈基址 由高位到低位增长 可用0x8000-0x7c00-512=512字节
mov bp, 0x8000
mov sp, bp
sti

; mov [bp-1], byte '1'
; mov [bp-2], byte '2'
; mov [bp-3], byte '3'
; mov [bp-4], byte '4'
; mov [bp-5], byte '5'
; mov [bp-6], byte '6'
; sub sp, 6
push 'A'
push 'B'
push 'C'
push 'D'
push 'E'


; tty模式
mov ah, 0x0e

pop bx
mov al, bl ; C
int 0x10
mov al, 'a' ; C
int 0x10
pop bx
mov al, bl ; B
int 0x10
mov al, 'b' ; C
int 0x10
pop bx
mov al, bl ; A
int 0x10
mov al, 'c' ; C
int 0x10
pop bx
mov al, bl ; A
int 0x10
mov al, 'd' ; C
int 0x10
pop bx
mov al, bl ; A
int 0x10
mov al, 'e' ; C
int 0x10

jmp $

times 510 - ($ - $$) db 0x00

dw 0xaa55
